<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <p data-lake-id="u5c6b4b86" id="u5c6b4b86"><span data-lake-id="ub588bfde" id="ub588bfde">Spring在2022年相继推出了Spring Framework 6.0和SpringBoot 3.0，Spring把这次升级称之为新一代框架的开始，下一个10年的新开端</span></p>
  <p data-lake-id="u7f60e547" id="u7f60e547"><br></p>
  <p data-lake-id="u9f8b7453" id="u9f8b7453"><span data-lake-id="u384598cc" id="u384598cc">主要更新内容是以下几个：</span></p>
  <p data-lake-id="ub0f2dbd9" id="ub0f2dbd9"><br></p>
  <ul list="ue9ee21e7">
   <li fid="u9f56574d" data-lake-id="u5fd7a733" id="u5fd7a733"><span data-lake-id="u62d22680" id="u62d22680"> A Java 17 baseline </span></li>
   <li fid="u9f56574d" data-lake-id="u6a2c562f" id="u6a2c562f"><span data-lake-id="uf52ab88d" id="uf52ab88d"> Support for Jakarta EE 10 with an EE 9 baseline </span></li>
   <li fid="u9f56574d" data-lake-id="uebb68f6a" id="uebb68f6a"><span data-lake-id="ub903fe70" id="ub903fe70"> Support for generating native images with GraalVM, superseding the experimental Spring Native project </span></li>
   <li fid="u9f56574d" data-lake-id="u8e36a0ee" id="u8e36a0ee"><span data-lake-id="u648607d8" id="u648607d8"> Ahead-Of-Time transformations and the corresponding AOT processing support for Spring application contexts </span></li>
  </ul>
  <p data-lake-id="u9e07427c" id="u9e07427c"><br></p>
  <p data-lake-id="ud4e102f9" id="ud4e102f9"><span data-lake-id="u37cf3664" id="u37cf3664">首先，前两个比较容易理解，主要说的是依赖的服务的版本升级的信息，那就是Spring Framework 6.0和SpringBoot 3.0都要求JDK的版本最低也得是JDK 17；并且底层依赖的J2EE也迁移到了Jakarta EE 9。</span></p>
  <p data-lake-id="uc44f84ad" id="uc44f84ad"><br></p>
  <p data-lake-id="u72fec8af" id="u72fec8af"><span data-lake-id="u0d62c7d7" id="u0d62c7d7">虽然JDK 17有很多新的特性，并且也是目前最新的一个LTS版本。</span></p>
  <p data-lake-id="u39a1dd52" id="u39a1dd52"><br></p>
  <p data-lake-id="u3fb83178" id="u3fb83178"><span data-lake-id="u3f59b3b1" id="u3f59b3b1">但是其实真正的使用比较多的版本还是JDK 1.8，而Spring彻底抛弃17之前的所有版本！！！</span></p>
  <p data-lake-id="uab67b613" id="uab67b613"><br></p>
  <h2 data-lake-id="cc628c83" id="cc628c83"><span data-lake-id="u4ef58896" id="u4ef58896">AOT编译</span></h2>
  <p data-lake-id="uf64fbe53" id="uf64fbe53"><br></p>
  <p data-lake-id="u18cc6664" id="u18cc6664"><span data-lake-id="u5ae59e4e" id="u5ae59e4e">Ahead-Of-Time，即预先编译，这是相对于我们熟知的Just-In-Time（JIT，即时编译）来说的。</span></p>
  <p data-lake-id="u0d1a535d" id="u0d1a535d"><br></p>
  <p data-lake-id="u35b2ead2" id="u35b2ead2"><span data-lake-id="u2af7be4a" id="u2af7be4a">相比于JIT编译，AOT指的是在程序运行前编译，这样就可以避免在运行时的编译性能消耗和内存消耗，可以在程序运行初期就达到最高性能、也可以显著的加快程序的启动。</span></p>
  <p data-lake-id="uefbdf650" id="uefbdf650"><br></p>
  <p data-lake-id="u2b4efded" id="u2b4efded"><span data-lake-id="u6acd7198" id="u6acd7198">AOT的引入，意味着Spring生态正式引入了提前编译技术，相比于JIT编译，AOT有助于优化Spring框架启动慢、占用内存多、以及垃圾无法被回收等问题。</span></p>
  <p data-lake-id="u7228a92e" id="u7228a92e"><br></p>
  <h2 data-lake-id="24d90b05" id="24d90b05"><span data-lake-id="u88a77f96" id="u88a77f96">Spring Native</span></h2>
  <p data-lake-id="uee79f336" id="uee79f336"><br></p>
  <p data-lake-id="u8f988958" id="u8f988958"><span data-lake-id="u1e989616" id="u1e989616">在Spring的新版本中引入了Spring Native。</span></p>
  <p data-lake-id="u89fc881e" id="u89fc881e"><br></p>
  <p data-lake-id="u4575c282" id="u4575c282"><span data-lake-id="u229ed000" id="u229ed000">有了Spring Native ，Spring可以不再依赖Java虚拟机，而是基于 GraalVM 将 Spring 应用程序编译成原生镜像（native image），提供了一种新的方式来部署 Spring 应用。这种部署Spring的方式是云原生友好的。</span></p>
  <p data-lake-id="uc2c8af52" id="uc2c8af52"><br></p>
  <p data-lake-id="ua8d5bb24" id="ua8d5bb24"><span data-lake-id="u7ca46ecb" id="u7ca46ecb">SpringNative的优点是编译出来的原生 Spring 应用可以作为一个独立的可执行文件进行部署，而不需要安装JVM，而且启动时间非常短、并且有更少的资源消耗。他的缺点就是构建时长要比JVM更长一些。</span></p>
  <p data-lake-id="ud1252c27" id="ud1252c27"><br></p>
 </body>
</html>